#ifndef INVOCATION_H
#define INVOCATION_H

#include "gamekit/gamekit.h"
#include "gamekit/common/Delegate.h"

struct lua_State;

namespace gamekit
{
	namespace scripting
	{
		class Arguments;
		class Result;

		class Invocation
		{
			typedef unsigned int uint;

		public:
			Invocation(lua_State* state, Delegate<Result, Arguments> delegate);
			~Invocation();

			uint exec(void);
		private:
			lua_State* m_state;
			Delegate<Result, Arguments> m_delegate;
		};
	}
}

#endif
